Backlog の wiki からデータを TypeScript で取ってみた
こんにちは、高崎@アノテーション です。
はじめに
業務の管理・連携に Backlog を使っているのですが、課題や wiki といった記事の内容を取得する必要もあるかと思います。
手動でブラウザから PDF によるダウンロードも出来ますが、今回は取得後に文章の一部を編集する等の処理が必要になり、TypeScript から Backlog API を用いて取得するようにしたので、そのやり方をまとめました。
Backlog からのデータの取得
Backlog ドキュメント にも記載されておりますが、Backlog へアクセスしたい場合は以下の方法があります。
- API キーを用いて取得
- OAuth2 方式で取得
今回はローカルでのツールにつきあまり時間をかけないように作成したかったため、API キーを用いた方法で取得しました。
API キーの取得
API キーは個人設定のメニューから作成可能です。
1.個人設定のページへ移動し「API」メニューを選択する
2.登録を押す
(補足)プロジェクトIDの取得
今回使用する API には不要ですが、API によってはプロジェクト ID が必要になる場合がありますので、そのやり方も記載しておきます。
- 左側にあるプロジェクトの設定メニューから「プロジェクト設定」にカーソルをあわせる
- 移動しようとしている URL の「xxx.backlog.jp/ViewPermission.action?projectId=nnnnnn」となっている「projectId=」以降の数字がプロジェクトIDなのでその数字を控えておく
では API をコールする
まずはコマンドを打ってみる
wiki取得API定義はここ にありますが、試しにターミナルから打ってみるとこんな感じになります。
$ curl "https://xxx.backlog.jp/api/v2/wikis/取得したいwikiの番号?apiKey=APIキー"
そうすると、レスポンスはこんな感じの json になります。
{"id":wikiのID,"projectId":プロジェクトID,"name":"wikiページのタイトル","content":"本文テキスト"…}
ですので、TypeScript で組む場合の方針としては以下のようにしました。
- URL 文字列を組んで GET 要求する
- 取れたレスポンスの data.content をテキストとして使用する
TypeScript で実装
それでは実装例です。
import axios from 'axios'; const stringBacklogURL = "https://xxx.backlog.jp/"; const stringGetWikiAPI = "api/v2/wikis"; const stringApiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; export const getContents = async (requestWikiNo: string): Promise<string> { const requestEndPoint: string = `${stringBacklogURL}${stringGetWikiAPI}/${requestWikiNo}?`; const requestParam = new URLSearchParams({ apiKey: stringApiKey, }); try { const responseBacklog = await axios.get(requestEndPoint + requestParam); return responseBacklog.data.content; } catch(e) { console.log("error handler : ", e); } return ""; }; : const stringWikiBody = await getContents("xxxxxx"); :
実際は取得後に正規表現を使う等の処理を実装していますが、本記事では割愛いたしました。
おわりに
今回は API キーを使って Backlog の wiki のデータを取得する処理を実装しました。
OAuth2 による取得が必要になり実装出来た時にはまたブログ化したいと思います。
この記事が参考になれば幸いです。
参考文献
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。
現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。
少しでもご興味あれば、アノテーション株式会社WEBサイト をご覧ください。